DokuWiki

It's better when it's simple

Herramientas de usuario

Herramientas del sitio


es:devel:authentication_backends

Como escribir un Backend para autenticar

El sistema de autenticación de DokuWiki es muy modular y puede, generalmente hablando, autenticar cualquier cosa que sea accesible desde PHP.

Si no proporciona nada de lo que quiere para autenticar, puede simplemente crearse uno propio. Los Backends se almacenan en la carpeta inc/auth/ con el nombre <backend>.class.php, donde <backend> es el nombre de su sistema de autenticación (backend). En este archivo necesita indicar una clase con el nombre auth_<backend>. Su clase debe extender uno de los backends existentes o la clase auth_basic definida en inc/auth/basic.class.php.

En su clase, necesitará sobreescribir unos pocos métodos y establecer algunas variables públicas de la clase básica. Lea la siguiente documentación, pero para implentarla, ¡necesitará echar un vistazo a la clase básica comments!.

Si escribe una nueva funcionalidad, ¡compartalá con la comunidad!.

Campos a establecer

$success

Este simple booleano debe ser ajustado en true en su constructor, si el módulo de autenticación se ha iniciado correctamente. Utilice esta opción para notificar a la interfaz que algo ha salido mal estableciéndolo a false.

$cando

El campo $cando es una array asociativo de valores booleanos. Es necesario poner los valores de los campos del array a true para todas las funciones que proporcione su backend. A continuación un lista de todas los campos clave junto a su significado para el campo $cando:

addUser ¿puede añadir usuarios?
delUser ¿puede eliminar usuarios?
modLogin ¿puede cambiar los nombres de usuarios?
modPass ¿puede cambiar contraseñas?
modName ¿puede cambiar los nombres reales?
modMail ¿puede cambiar emails?
modGroups ¿puede cambiar grupos?
getUsers ¿puede recuperar una lista (filtrada) de usuarios?
getUserCount ¿puede recuperar el número de usuarios?
getGroups ¿puede recuperar grupos de usuarios?
external ¿Realiza el módulo una autenticación externa?
logoff ¿tiene el módulo algún método de salida especial?

Métodos requeridos

Sólo dos funciones necesitan ser implementadas obligatoriamente. Pero, cuantas más realice, mayor funcionalidad de su módulo.

Constructor

Bueno la clase debe tener un constructor, por supuesto :-) Aquí se establecen los campos mencionados antes.

checkPass()

Esta función se necesita para comprobar si el usuario dado existe y la contraseña en texto plano dada es correcta.

getUserData()

Se utiliza para devolver información de usuario como la dirección de correo electrónico y nombre real.

Métodos opcionales

Todos estos métodos son opcionales y sólo serán llamados si el apropiado campo del array cando se establece.

trustExternal()

Si $cando['external'] is true, esta función se utilizará para autenticar al usuario – el resto de funciones internas de DokuWiki no se utilizarán para autenticar.

La función se puede utilizar para autenticarse en las cookies de terceros o mecanismos de autenticación de Apache y sustituye a la función auth_login() de inc/auth.php.

Echa un vistado al backend punbb para un ejemplo de utilización de esta función.

Si esta función se lleva se utiliza, puede omitir todas las otras funciones de su módulo (incluso por encima de las requeridas -a excepción del constructor, por supuesto-).

De acuerdo con el ejemplo de punbb, la función trustExternal() tiene que establecer las siguientes variables globales:

$USERINFO['name']
$USERINFO['mail']
$USERINFO['grps']
$_SERVER['REMOTE_USER']
$_SESSION[DOKU_COOKIE]['auth']['user']
$_SESSION[DOKU_COOKIE]['auth']['info'] = $USERINFO;

Para una descripción de las variables $USERINFO vea la documentación de la función GetUserData.
No olvide añadir 'global $USERINFO' al principio de esta función para que la variable esté accesible. Otra cosa, si está pensando en implementar un registro simple (Single Sing On) basado en una cookie, esto es, si quiere utilizar el formulario de login de DokuWiki login cuando la SSO cookie no está presente, necesita establecer la cookie una vez que verifique las credenciales. Por eso la siguiente página a cargar se puede autenticar basándose en esa SSO cookie como las variables $user y $pass variables estarán vacias si no se ha accedido al formulario de login. En punbb est se hacen con la llamada a la función pun_setcookie().

logOff()

Si se establece $cando['logoff'] a valor true esta función será llamada por el evento de logoff. Utilicelá para limpiar las cookies u otras aciones similares. Probablemente sólo es útili con trustExternal.

createUser()

Crea un usuario con los datos proporcionados.

modifyUser()

Modifica los datos de un usuario.

deleteUser()

Borra uno o más usuarios.

getUserCount()

Devuelve el número de usuarios que casan con los criterios de filtrado.

retrieveUsers()

Casa los datos de usuarios para múltiples usuarios y ciertos criterios de filtrado.

addGroup()

Crea un nuevo grupo.

retrieveGroups()

Lista todos los grupos disponibles.

es/devel/authentication_backends.txt · Última modificación: 2014-02-27 17:23 por Klap-in

Excepto donde se indique lo contrario, el contenido de este wiki esta bajo la siguiente licencia: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki